package practicacupfinal;

import MaquinaVirtual.MaquinaPila;
import java.io.FileInputStream;
import es.ucm.fdi.plg.evlib.Atributo;
import es.ucm.fdi.plg.evlib.TAtributos;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Enumeration;
import java_cup.runtime.*;
import semantica.tipos.*;
import semantica.*;




public class Main {
  public static void main(String[] args) throws Exception  {   //throws Exception
      Atributo.fijaDebug(false);
     // try {
        Parser p = new Parser(new Scanner(new FileInputStream("input.txt")),new DefaultSymbolFactory());

          Symbol s = p.parse();
          TAtributos atributos = (TAtributos) s.value;

          Tipo tipo = (Tipo) atributos.a("tipo").valor();
          ArrayList<Boolean> err = (ArrayList<Boolean>) atributos.a("err").valor();
          ArrayList<String> cod = (ArrayList<String>) atributos.a("cod").valor();
          String mostrarErrores = (String) atributos.a("mostrarErrores").valor();
          int etq = (int) atributos.a("etq").valor();
          TablaDeSimbolos ts = (TablaDeSimbolos) atributos.a("ts").valor();
          
          if (tipo.getTipo().equals("errorTipo") || Semantica.hayError(err)){
               System.out.println("- Tipo: " + tipo.getTipo());
               System.out.println("- Array de errores: " + err);
               System.out.println("- Errores sintacticos: \n " + mostrarErrores);               
          } else {
              System.out.println("- Etq: " + etq);
              System.out.println("- Codigo: " + cod);
              System.out.println("- Tabla de Simbolos: "); ts.muestraDatosTipo(); 
              MaquinaPila mp = new MaquinaPila(cod);
          }
         
         
     // } catch (Exception e) {
          //System.out.println(e.getMessage());
     // }
        
  }
}
